Cache-Control: no-cache
cacheを使用する際に、validateを強制するという指定
no-cacheという名前だが、「cacheしない」という意味ではないことに注意
Reqest Headerにも、Response Headerにも指定できる
既に保存されているcacheを使用する際の話
常に最新のデータが返されるし、cacheがある分速くなるので嬉しい
Response Headerに指定した場合
Proxy(あるいはBrowser)目線で、reqeustが飛んできた時に以下のような条件分岐をする
既にCacheがある場合
すぐにCacheを返さない
最新の場合
Cacheから返す
最新でない場合
Originから返す(200)
Cacheがない場合
普通にOriginに問い合わせる
Request Headerに指定した場合
no-cacheを指定して何が嬉しいのか?
cacheの新鮮さに関わらず毎回Originに問い合わせるなら特に速くなっていなくない?と思う
が、そうでもない
問い合わせ時にやりとりするのは、「新鮮かどうか?」と「新鮮だよ」だけで良い
responseに実際の大きなデータを含める必要はない
特にこれは、browserがcacheしている場合を考えればわかりやすい
cacheを使った時は、大きなデータはネットワーク上を移動していない
server側でrequestを処理して計算を行う必要はない
新鮮かどうかの判断だけすれば良い
故に、cacheを使っていない時に比べれば速くなっている
なんでこんな紛らわしい名前?
仕様と実装が違いすぎて難しい
このツイートだけ見るとFirefoxだけ仕様通りなように見える